package model.comunication;

import java.util.ArrayList;
import java.util.List;

import model.IRCursadaSala;
import model.IRHorarioCursada;
import model.dba.IRCursadaSalaDAO;

public class IIRCursadaSala {
	private IRCursadaSalaDAO irCursadaSalaDAO;
	private static IIRCursadaSala irCursadaSalaInterface;

	private IIRCursadaSala() {
		irCursadaSalaDAO = IRCursadaSalaDAO.getInstance();
	}

	public static IIRCursadaSala getInstance() {
		if (irCursadaSalaInterface == null) {
			irCursadaSalaInterface = new IIRCursadaSala();
		}
		return irCursadaSalaInterface;
	}

	/**
	 * Crea el objeto
	 * 
	 * @param id
	 * @param nombre
	 * @return
	 */
	public IRCursadaSala getIRCursadaSala(Integer idCursada, Integer idSala) {
		return new IRCursadaSala(idCursada, idSala);
	}

	/**
	 * Crea el objeto
	 * 
	 * @param nombre
	 * @return
	 */
	// public IRCursadaSala getIRCursadaSala(Integer idCursada, Integer idSala) {
	// return new IRCursadaSala(idCursada,idSala);
	// }

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param id
	 * @return
	 */
	// TODO areglar para busacar para que te de un objeto
	public List<IRCursadaSala> findAll(Integer idCursadaC) {
		return this.irCursadaSalaDAO.findAll(idCursadaC);
	}

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param id
	 * @return
	 */
	// TODO areglar para busacar para que te de un objeto
	public List<IRCursadaSala> findAllXSala(Integer idSala) {
		return this.irCursadaSalaDAO.findAllXSala(idSala);
	}

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param id
	 * @return
	 */
	// En un futuro se puede poner nombre(primero agragar a la DAO
	// public Sala findSala(String nombre) {
	// return this.salaDAO.find(nombre);
	// }

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param id
	 * @return
	 */
	public IRCursadaSala getIRCursadaSala(Integer id) {
		return this.irCursadaSalaDAO.get(id);
	}

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @return
	 */
	public List<IRCursadaSala> getAllIRCursadaSala() {
		return this.irCursadaSalaDAO.getAll();
	}

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param ids
	 * @return
	 */
	public List<IRCursadaSala> getSelectedIRCursadaSala(Integer... ids) {// VER por exception
		List<IRCursadaSala> idList = new ArrayList<IRCursadaSala>();

		for (Integer id : ids) {
			idList.add(this.irCursadaSalaDAO.get(id));
		}
		return idList;
	}

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param Sala
	 * @return
	 */
	public Integer addIRCursadaSala(IRCursadaSala sala) {
		return this.irCursadaSalaDAO.add(sala);
	}

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param id
	 * @return
	 */
	public boolean deleteIRCursadaSala(Integer id) {
		return this.irCursadaSalaDAO.delete(id);
	}

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param Sala
	 * @return
	 */
	// En un futuro se puede poner nombre(primero agragar a la DAO
	// public boolean updateIRCursadaInstructor(IRCursadaInstructor sala) {
	// return this.salaDAO.update(sala);
	// }

}
